home *** CD-ROM | disk | FTP | other *** search
- #! /bin/sh
- ### BEGIN INIT INFO
- # Provides: umountfs
- # Required-Start:
- # Required-Stop: umountroot
- # Default-Start:
- # Default-Stop: 0 6
- # Short-Description: Turn off swap and unmount all local file systems.
- # Description:
- ### END INIT INFO
-
- PATH=/sbin:/usr/sbin:/bin:/usr/bin
- . /lib/init/vars.sh
-
- . /lib/lsb/init-functions
-
- umask 022
-
- do_stop () {
- exec 9<&0 </proc/mounts
-
- PROTECTED_MOUNTS="$(sed -n '0,/^\/[^ ]* \/ /p' /proc/mounts)"
- WEAK_MTPTS="" # be gentle, don't use force
- REG_MTPTS=""
- TMPFS_MTPTS=""
- while read -r DEV MTPT FSTYPE REST
- do
- echo "$PROTECTED_MOUNTS" | grep -qs "^$DEV $MTPT " && continue
- case "$MTPT" in
- /|/proc|/dev|/.dev|/dev/pts|/dev/shm|/dev/.static/dev|/proc/*|/sys|/lib/init/rw)
- continue
- ;;
- /var/run)
- continue
- ;;
- /var/lock)
- continue
- ;;
- esac
- case "$FSTYPE" in
- proc|procfs|linprocfs|devfs|sysfs|usbfs|usbdevfs|devpts)
- continue
- ;;
- tmpfs)
- TMPFS_MTPTS="$MTPT $TMPFS_MTPTS"
- ;;
- *)
- if echo "$PROTECTED_MOUNTS" | grep -qs "^$DEV "; then
- WEAK_MTPTS="$MTPT $WEAK_MTPTS"
- else
- REG_MTPTS="$MTPT $REG_MTPTS"
- fi
- ;;
- esac
- done
-
- exec 0<&9 9<&-
-
- #
- # Make sure tmpfs file systems are umounted before turning off
- # swap, to avoid running out of memory if the tmpfs filesystems
- # use a lot of space.
- #
- if [ "$TMPFS_MTPTS" ]
- then
- if [ "$VERBOSE" = no ]
- then
- log_action_begin_msg "Unmounting temporary filesystems"
- fstab-decode umount $TMPFS_MTPTS
- log_action_end_msg $?
- else
- log_daemon_msg "Will now unmount temporary filesystems"
- fstab-decode umount -v $TMPFS_MTPTS
- log_end_msg $?
- fi
- fi
-
- #
- # Deactivate swap
- #
- if [ "$VERBOSE" = no ]
- then
- log_action_begin_msg "Deactivating swap"
- swapoff -a >/dev/null
- log_action_end_msg $?
- else
- log_daemon_msg "Will now deactivate swap"
- swapoff -a -v
- log_end_msg $?
- fi
-
- #
- # Unmount local filesystems
- #
- if [ "$WEAK_MTPTS" ]; then
- if [ "$VERBOSE" = no ]
- then
- log_action_begin_msg "Unmounting weak filesystems"
- fstab-decode umount -f -r -d $WEAK_MTPTS
- log_action_end_msg $?
- else
- log_daemon_msg "Will now unmount weak filesystems"
- fstab-decode umount -f -v -r -d $WEAK_MTPTS
- log_end_msg $?
- fi
- fi
- if [ "$REG_MTPTS" ]
- then
- if [ "$VERBOSE" = no ]
- then
- log_action_begin_msg "Unmounting local filesystems"
- fstab-decode umount -f -r -d $REG_MTPTS
- log_action_end_msg $?
- else
- log_daemon_msg "Will now unmount local filesystems"
- fstab-decode umount -f -v -r -d $REG_MTPTS
- log_end_msg $?
- fi
- fi
- }
-
- case "$1" in
- start)
- # No-op
- ;;
- restart|reload|force-reload)
- echo "Error: argument '$1' not supported" >&2
- exit 3
- ;;
- stop)
- do_stop
- ;;
- *)
- echo "Usage: $0 start|stop" >&2
- exit 3
- ;;
- esac
-
- :
-